package org.ww.seckill.scheduled;

import lombok.extern.slf4j.Slf4j;
import org.springframework.scheduling.annotation.Async;
import org.springframework.scheduling.annotation.EnableAsync;
import org.springframework.scheduling.annotation.EnableScheduling;
import org.springframework.stereotype.Component;

/**
 * @program: gmall
 * @description:
 * @author: ww
 * @create: 2024-11-05 11:45
 **/
@EnableAsync
@Slf4j
@Component
@EnableScheduling  //开启定时任务
public class HelloScheduled {

    /**
     * spring中的cron必须由6位组成，第7位的年不允许出现
     * week代表周，第5位，周一到周五就是1-6（跟官网不一样）
     * 定时任务不应该被阻塞，默认是阻塞的（业务逻辑超长，阻塞其他的定时任务）
     *  1）可以让任务以异步的方式运行CompletableFuture
     *  2）使用定时任务 TaskSchedulingProperties
     *  3）让定时任务异步执行
     *      1、在类上标注@EnableAsync
     *      2、在需要异步的方法上标注@Async
     *      3、可以配置异步线程池大小
     *          spring.task.execution.pool.core-size=5
     *          spring.task.execution.pool.max-size=50
     */
    @Async
//    @Scheduled(cron = "* * * * * ?")
    public void hello() throws InterruptedException {
        log.info("hello world");
        Thread.sleep(3000);
    }

}
